🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / .specify / extensions / verify / scripts / bash / load-config.sh
Displaying Raw • Download
.specify/extensions/verify/scripts/bash/load-config.sh 65a1f5ce4d0e4b8eafcd0bbfccafd41dc6ee888a (65a1f5ce) Text, 2.41 KB
T8b949e#!/usr/bin/env bash
T8b949e# load-config.sh — Load and validate the verify extension configuration.
T8b949e#
T8b949e# Reads report.max_findings from the YAML config file,
T8b949e# normalises YAML null sentinels, applies an optional environment
T8b949e# variable override (SPECKIT_VERIFY_MAX_FINDINGS), and validates
T8b949e# that a value is present before exporting it.
T8b949e#
T8b949e# Usage: load-config.sh
T8b949e#
T8b949e# Exit codes:
T8b949e# 0 — configuration loaded successfully
T8b949e# 1 — config file missing, required value not set, or invalid value
Te6edf3config_fileTff7b72=Ta5d6ff".specify/extensions/verify/verify-config.yml"
Te6edf3extension_fileTff7b72=Ta5d6ff".specify/extensions/verify/extension.yml"
Te6edf3using_defaultsTff7b72=Tffa657false
Tff7b72if Tff7b72[ ! -f Ta5d6ff"Te6edf3$config_fileTa5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Tff7b72if Tff7b72[ -f Ta5d6ff"Te6edf3$extension_fileTa5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Te6edf3using_defaultsTff7b72=Tffa657true
Tff7b72else
Tffa657echo Ta5d6ff"Ta5d6ff❌ Error: Configuration not found at Te6edf3$config_fileTa5d6ff"
Tffa657echo Ta5d6ff"Run 'specify extension add verify' to install and configure"
Tffa657exit T79c0ff1
Tff7b72fi
Tff7b72fi
T8b949e# Read configuration values
T8b949e# Extract a YAML value for a key from a file using only built-in tools.
T8b949e# Finds the last occurrence of the key (handles nested sections) and
T8b949e# strips surrounding whitespace and double quotes.
yaml_valueTff7b72(Tff7b72) Tff7b72{
Tffa657local Te6edf3keyTff7b72=Ta5d6ff"Te6edf3$1Ta5d6ff" Te6edf3fileTff7b72=Ta5d6ff"Te6edf3$2Ta5d6ff"
Tffa657local raw
Te6edf3rawTff7b72=Tff7b72$(grep -E Ta5d6ff"Ta5d6ff^[[:space:]]*Tffd700${Te6edf3keyTffd700}Ta5d6ff:Ta5d6ff" Ta5d6ff"Te6edf3$fileTa5d6ff" Tb4b4b4| tail -n T79c0ff1 Tb4b4b4| sed Ta5d6ff"s/^[^:]*://"Tff7b72)
T8b949e# Trim leading/trailing whitespace
Te6edf3rawTff7b72=Tff7b72$(Tffa657echo Ta5d6ff"Te6edf3$rawTa5d6ff" Tb4b4b4| sed Ta5d6ff's/^[[:space:]]*//;s/[[:space:]]*$//'Tff7b72)
T8b949e# Strip surrounding double quotes
Te6edf3rawTff7b72=Tff7b72$(Tffa657echo Ta5d6ff"Te6edf3$rawTa5d6ff" Tb4b4b4| sed Ta5d6ff's/^"\(.*\)"$/\1/'Tff7b72)
Tffa657echo Ta5d6ff"Te6edf3$rawTa5d6ff"
Tff7b72}
Tff7b72if Tff7b72[ Ta5d6ff"Te6edf3$using_defaultsTa5d6ff" Tff7b72= Tffa657true Tff7b72]Tb4b4b4; Tff7b72then
Te6edf3max_findingsTff7b72=Tff7b72$(yaml_value max_findings Ta5d6ff"Te6edf3$extension_fileTa5d6ff"Tff7b72)
Tff7b72else
Te6edf3max_findingsTff7b72=Tff7b72$(yaml_value max_findings Ta5d6ff"Te6edf3$config_fileTa5d6ff"Tff7b72)
Tff7b72fi
T8b949e# Treat YAML null sentinels as empty
Tff7b72if Tff7b72[ Ta5d6ff"Te6edf3$max_findingsTa5d6ff" Tff7b72= Ta5d6ff"null" Tff7b72] Tff7b72|| Tff7b72[ Ta5d6ff"Te6edf3$max_findingsTa5d6ff" Tff7b72= Ta5d6ff"~" Tff7b72]Tb4b4b4; Tff7b72then
Te6edf3max_findingsTff7b72=Ta5d6ff""
Tff7b72fi
T8b949e# Apply environment variable overrides
Te6edf3max_findingsTff7b72=Ta5d6ff"Tffd700${Te6edf3SPECKIT_VERIFY_MAX_FINDINGSTff7b72:-Te6edf3$max_findingsTffd700}Ta5d6ff"
T8b949e# Validate configuration
Tff7b72if Tff7b72[ -z Ta5d6ff"Te6edf3$max_findingsTa5d6ff" Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"❌ Error: Configuration value not set"
Tffa657echo Ta5d6ff"Ta5d6ffEdit Te6edf3$config_fileTa5d6ff and set 'report.max_findings'Ta5d6ff"
Tffa657exit T79c0ff1
Tff7b72fi
Tff7b72if ! Tff7b72[Tff7b72[ Ta5d6ff"Te6edf3$max_findingsTa5d6ff" Tff7b72=~ ^Tff7b72[T79c0ff0-9Tff7b72]+$ Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Ta5d6ff❌ Error: 'report.max_findings' must be a positive integer, got 'Te6edf3$max_findingsTa5d6ff'Ta5d6ff"
Tffa657echo Ta5d6ff"Ta5d6ffEdit Te6edf3$config_fileTa5d6ff and set 'report.max_findings' to a number (e.g. 50)Ta5d6ff"
Tffa657exit T79c0ff1
Tff7b72fi
Tff7b72if Tff7b72[ Ta5d6ff"Te6edf3$using_defaultsTa5d6ff" Tff7b72= Tffa657true Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"⚠️ No config file found; using defaults from extension.yml"
Tff7b72fi
Tffa657echo Ta5d6ff"Ta5d6ff📋 Configuration loaded: max_findings=Te6edf3$max_findingsTa5d6ff"
Served by rngit 1.5.2 - Generated in 0.13s